//进行axios二次封装
import axios from "axios";
import { ElMessage } from "element-plus";
//第一步：利用axios对象的方法，去创建axios实例
//(其他配置：基础路径，超时时间)
const request = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  //超时时间设置
  timeout: 5000,
});
request.interceptors.request.use((config) => {
  //config配置对象,headers属性请求头,经常给服务器端携带公共参数
  config.headers.token = "";
  return config;
});
request.interceptors.response.use(
  (response) => {
    //成功的回调
    //获取简化后的数据
    return response.data;
  },
  (error) => {
    //失败回调：处理http网络错误
    let message = "";
    let status = error.response.status;
    switch (status) {
      case 401:
        message = "TOKEN过期";
        break;
      case 403:
        message = "无权访问";
        break;
      case 404:
        message = "请求地址错误";
        break;
      case 500:
        message = "服务器出现问题";
        break;
      default:
        message = "网络出现问题";
        break;
    }
    //提示错误信息
    ElMessage({
      type: "error",
      message,
    });

    return Promise.reject(error);
  },
);

//对外暴露(默认暴露)
export default request;
